home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / termsorc.lha / Extras / Source / gtlayout-source.lha / LTP_DefaultHistoryHook.c < prev    next >
C/C++ Source or Header  |  1995-09-24  |  1KB  |  49 lines

  1. /*  GadTools layout toolkit
  2. **
  3. **  Copyright © 1993-1995 by Olaf `Olsen' Barthel
  4. **  Freely distributable.
  5. */
  6.  
  7. #include "gtlayout_global.h"
  8.  
  9. ULONG __asm __saveds
  10. LTP_DefaultHistoryHook(register __a0 struct Hook *Hook,register __a1 STRPTR NewString,register __a2 struct Gadget *Gadget)
  11. {
  12.     ObjectNode        *Node    = (ObjectNode *)Gadget -> UserData;
  13.     struct LayoutHandle    *Handle = Node -> Special . String . LayoutHandle;
  14.     struct MinList        *List    = (struct MinList *)Hook -> h_Data;
  15.  
  16.     if(NewString)
  17.     {
  18.         ULONG *Data;
  19.  
  20.         if(Data = (ULONG *)LTP_Alloc(Handle,sizeof(ULONG) + sizeof(struct Node) + strlen(NewString) + 1))
  21.         {
  22.             struct Node *NewNode;
  23.  
  24.             *Data++ = sizeof(ULONG) + sizeof(struct Node) + strlen(NewString) + 1;
  25.  
  26.             NewNode = (struct Node *)Data;
  27.  
  28.             NewNode -> ln_Name = (STRPTR)(NewNode + 1);
  29.  
  30.             strcpy(NewNode -> ln_Name,NewString);
  31.  
  32.             AddTail((struct List *)List,NewNode);
  33.         }
  34.         else
  35.             return(FALSE);
  36.     }
  37.     else
  38.     {
  39.         if(List -> mlh_Head -> mln_Succ)
  40.         {
  41.             ULONG *Data = (ULONG *)RemHead((struct List *)List);
  42.  
  43.             LTP_Free(Handle,&Data[-1],Data[-1]);
  44.         }
  45.     }
  46.  
  47.     return(TRUE);
  48. }
  49.